Software development includes writing software from scratch, adding new functionality to existing software, analyzing software, and/or correcting errors in software. Some software development efforts include only a single developer who is working on few thousand lines (or less) of source code. But many software development efforts include multiple developers working in one or more teams, and many products have software that includes tens of thousands of lines of code, or even more. Modern automobiles, for example, contain dozens of microprocessors which are controlled by software that contains tens of millions of lines of code.
To help developers manage the complexity of software development, tools have been created to assist with development activities such as editing code, checking code for errors, profiling code performance, controlling code versions, organizing code libraries, and building test or release versions of software programs. Some frequently used programming tools are available in integrated development environments (IDEs). IDEs give developers easy access to a group of software development tools, such as a source code editor, one or more build tools (e.g., compilers, interpreters, linkers), and a debugger. IDEs can increase developer productivity by providing tightly-coupled tools which have similar user interfaces and share information with one another. Instead of making a developer travel outside the IDE to work on different pieces of program code, the IDE brings selected pieces of code into focus, allowing the developer to make edits and investigate errors in that currently active piece of the program.